/*============================================================================
  File:      IDMAlgorithmNavigation.Stubs.h
 
  Summary:   IDMAlgorithmNavigation declarations to paste into header file
			 for class implementing the new algorithm

  Date:		 September 12, 2003
------------------------------------------------------------------------------
  This file is part of the Microsoft SQL Server Code Samples.
 
  Copyright (C) 2003 Microsoft Corporation.  All rights reserved.
 
This source code is intended only as a supplement to Microsoft
Development Tools and/or on-line documentation.  See these other
materials for detailed information regarding Microsoft code samples.
 
THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
============================================================================*/

	// IDMDAGNavigation

	STDMETHOD (MoveToNextTree)(void);
	
	STDMETHOD (GetNodeID)(
		/* [out] */ DM_DAGNodeID *out_pNodeID);

	STDMETHOD (LocateNode)(
		/* [in] */ DM_DAGNodeID in_NodeID);

	STDMETHOD (ValidateNodeID)(
		/* [in] */ DM_DAGNodeID in_NodeID);
    
    STDMETHOD (GetParentCount)(
		/* [out] */ ULONG *out_pulParents);

    STDMETHOD (MoveToParent)(
		/* [in] */ ULONG in_ParentIndex);

	STDMETHOD (GetParentNodeID)(
		/* [in] */ ULONG in_ParentIndex,
		/* [out] */ DM_DAGNodeID *out_pNodeID);

    STDMETHOD (GetChildCount)(
		/* [out] */ ULONG *out_pulChilds);

    STDMETHOD (MoveToChild)(
		/* [in] */ ULONG in_ChildIndex);

    STDMETHOD (GetChildNodeID)(
		/* [in] */ ULONG			in_ChildIndex,
		/* [out] */ DM_DAGNodeID*	out_pNodeID);

    STDMETHOD (MoveToNextLeaf)(
		/* [in] */ DM_DAGNodeID in_ScopeNodeID);
    
    STDMETHOD (AddRefNodeID)(
		/* [in] */ DM_DAGNodeID in_NodeID);

    STDMETHOD (ReleaseNodeID)(
		/* [in] */ DM_DAGNodeID in_NodeID);

	// IDMAlgorithmNavigation

	STDMETHOD (GetNodeProperty)(
		/* [in] */ IDMContextServices*	in_pContext,
		/* [in] */ DM_NODE_PROP			in_PropID,
		/* [in] */ DMVariantPtr			io_pValue);
	
    STDMETHOD (GetNodeArrayProperty)(
		/* [in] */ IDMContextServices*	in_pContext,
		/* [in] */ DM_NODE_PROP			in_PropID,
		/* [out] */ ULONG*				out_pulArraySize,
		/* [out] */ void**				out_prgArrayBuffer);
    
    STDMETHOD (GetNodeUniqueName)(
		/* [in] */ IDMContextServices*	in_pContext,
		/* [out] */ DMString*			io_pstrUniqueName);

	STDMETHOD (GetNodeIDFromUniqueName)(
		/* [in] */ IDMContextServices*	in_pContext,
        /* [in] */ DMString*			in_pstrUniqueName,
        /* [out] */ DM_DAGNodeID*		out_pNodeID);

    STDMETHOD (GetUniqueNameFromNodeID)( 
        /* [in] */ IDMContextServices*	in_pContext,
        /* [in] */ DM_DAGNodeID			in_NodeID,
        /* [out] */ DMString*			out_pstrUniqueName);

